#define _CRT_SECURE_NO_WARNINGS 1
#include<stack>
using namespace std;
class MinStack {
public:
    /** initialize your data structure here. */
    MinStack()
    {}

    void push(int x) {
        _st.push(x);
        if (_MinSt.empty() || _MinSt.top() >= x)
        {
            _MinSt.push(x);
        }
    }

    void pop() {
        int top = _st.top();
        _st.pop();
        if (top == _MinSt.top())
        {
            _MinSt.pop();
        }
    }

    int top() {
        return _st.top();
    }

    int min() {
        return _MinSt.top();
    }

    stack<int> _st;
    stack<int> _MinSt;
};
